package gestores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import componentes.ListaCambiosPart;
import componentes.Participante;
import dao.DAO_Participante;

public class GestorParticipante {
	private static GestorParticipante INSTANCE = null;
	
	
	 /**
	    * constructor
	    */
	   private GestorParticipante() {
		}
	   
	     /**
	    *  Metodo para obtener una instancia, si existe la devuelve, sino la crea
	    * @return instancia si existe
	    */
	   public static GestorParticipante getInstance(){
			if (INSTANCE == null) { 
	           INSTANCE = new GestorParticipante();
	           }
			return INSTANCE;
	   }


	   public List<Participante> buscarParticipantes(String nombreComp){
		   ResultSet tablaParticipantes;
		   List<Participante> listaPart = new ArrayList<Participante>();
		   
		   
		   tablaParticipantes= DAO_Participante.getInstance().buscarParticipantesCompetencia(nombreComp);
		   try {
			   while(tablaParticipantes.next()){
				   listaPart.add(new Participante(tablaParticipantes.getString("nombre"),tablaParticipantes.getString("correo"), tablaParticipantes.getString("imagen")));
			   }
		   } catch (SQLException e) {
				e.printStackTrace();
			}
		   
		   return listaPart;
	   }
	
		public int getMaxIdParticipante() throws SQLException{
			ResultSet aux;
			int maxID;
			
			aux = GestorBD.getInstance().ejecutar("SELECT MAX(`participante`.`id_participante`) FROM `participante`");
			aux.next();
			maxID = Integer.parseInt(aux.getString("MAX(`participante`.`id_participante`)"));
			
			
			return maxID;
			
		}

		//Obtiene el participante 1 de un encuetnro, lo instancia y lo devuelve
		public Participante getParticipante1Encuentro(String id_encuentro) throws SQLException {
			// TODO Auto-generated method stub
			ResultSet aux;
			Participante participante; 
			
			aux = DAO_Participante.getInstance().getParticipante1Encuentro(id_encuentro);
			aux.next();
			participante = new Participante(aux.getString("nombre"), aux.getString("correo"), aux.getString("imagen"));
			
			return participante;
		}

		
		
		public Participante getParticipante2Encuentro(String id_encuentro) throws SQLException {
			// TODO Auto-generated method stub
			ResultSet aux;
			Participante participante; 
			aux = DAO_Participante.getInstance().getParticipante2Encuentro(id_encuentro);
			
			aux.next();
			participante = new Participante(aux.getString("nombre"), aux.getString("correo"), aux.getString("imagen"));
			
			return participante;
		}

		
		
		
		
		
		public ArrayList<ListaCambiosPart> getListaCambiosPart1(String id_encuentro) throws SQLException {
			// TODO Auto-generated method stub
			ResultSet aux;
			ListaCambiosPart cambios;
			ArrayList<ListaCambiosPart> listaCambios = new ArrayList<ListaCambiosPart>();
			

			aux = DAO_Participante.getInstance().getListaCambiosPart1(id_encuentro);
			
			while(aux.next()){
				cambios = new ListaCambiosPart(aux.getString("nombre"), aux.getString("fecha"));
				listaCambios.add(cambios);
			}
			
			return listaCambios;
		}

		public ArrayList<ListaCambiosPart> getListaCambiosPart2( String id_encuentro) throws SQLException {
			// TODO Auto-generated method stub
			ResultSet aux;
			ListaCambiosPart cambios;
			ArrayList<ListaCambiosPart> listaCambios = new ArrayList<ListaCambiosPart>();
			

			aux = DAO_Participante.getInstance().getListaCambiosPart2(id_encuentro);
			
			while(aux.next()){
				cambios = new ListaCambiosPart(aux.getString("nombre"), aux.getString("fecha"));
				listaCambios.add(cambios);
			}
			
			return listaCambios;
		}

		public String getIdParticipante(String correoElectronico, String nombreComp) throws SQLException {
			// TODO Auto-generated method stub
			ResultSet aux;
			
			aux = DAO_Participante.getInstance().getIdParticipante(correoElectronico, nombreComp);
			aux.next();
			

			return aux.getString("id_participante");
		}

	
	   
	   
	 
	
		
		
		
		
		public List<String> getIdResultadoPart(String id_competencia) throws SQLException{
			ResultSet aux;
			List<String> lista = new ArrayList<String>();
			
			
			aux = DAO_Participante.getInstance().getIdResultadoPart(id_competencia);
			
			while(aux.next()){
				
				lista.add(aux.getString("id_resultado"));
				
				
			}
			
			
			return lista;
			
			
			
		}

		
	   
	   
}
